/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package trabalho4paradigmas;

import cliente.Cliente;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import mercadoria.Mercadoria;
import venda.Venda;

/**
 *
 * @author Luis Henrique
 */
public class carregaArquivos {

    BufferedReader brCli, brMer, brVen;
    FileWriter brWCli, brWMer, brWVen;
    
    public void carregaArquivos() throws FileNotFoundException {
         
    }
    
    public void leArquivo(ArrayList<Cliente> listaCliente, 
            ArrayList<Mercadoria> listaMercadoria, 
            ArrayList<Venda> listaVenda) throws IOException{
        //Leitura do Arquivo
        brCli = new BufferedReader(new FileReader("Clientes.txt")); 
        brMer = new BufferedReader(new FileReader("Itens.txt"));
        brVen = new BufferedReader(new FileReader("Vendas.txt"));
        String linha;
        while(brCli.ready()){  
               
            Cliente c = new Cliente();
            
            linha = brCli.readLine(); 
            c.setNomeCliente(linha);
            
            linha = brCli.readLine();
            c.setEnderecoCliente(linha);
            
            linha = brCli.readLine();
            c.setFoneCliente(Integer.parseInt(linha));
            
            listaCliente.add(c);
           
            }  
        while(brMer.ready()){  
                      
           Mercadoria m = new Mercadoria();
           
            linha = brMer.readLine();
            m.setNomeItem(linha);
            
            linha = brMer.readLine();
            m.setQtdItem(Integer.parseInt(linha));
            
            linha = brMer.readLine();
            m.setPrecoItem(Float.parseFloat(linha));
            
            listaMercadoria.add(m);
            
            
        }
        while(brVen.ready()){  
        
           Venda v = new Venda();
            Cliente c;
            ArrayList<Mercadoria> m = new ArrayList<Mercadoria>();
        
            linha = brVen.readLine();
            for(Cliente p:listaCliente){
                if(p.getNomeCliente().contentEquals(linha) ){
                    v.setNomeCliente(p);
                    
                    linha = brVen.readLine();
                    for(Mercadoria t:listaMercadoria){
                        
                        //linha = brVen.readLine();
                        
                        if (t.getNomeItem().contentEquals(linha) ){
                            m.add(t);
                            linha = brVen.readLine();
                        }
                        
                        
                        if("*".contains(linha)){
                            linha = brVen.readLine();
                            v.setValorTotal(Float.parseFloat(linha));
                        }
                        
                    }
                  
                }
                v.setListaComprasCliente(m);
            }
            listaVenda.add(v);
        }
        
        brCli.close();
        brMer.close();
        brVen.close();
    }
    
    public void gravaArquivo(ArrayList<Cliente> listaCliente, 
            ArrayList<Mercadoria> listaMercadoria, 
            ArrayList<Venda> listaVenda) throws IOException{
        brWCli = new FileWriter("Clientes.txt");
        PrintWriter gravarArq = new PrintWriter(brWCli);
        
        brWMer = new FileWriter ("Itens.txt");
        PrintWriter gravarArq2 = new PrintWriter(brWMer);
        
        brWVen = new FileWriter ("Vendas.txt");
        PrintWriter gravarArq3 = new PrintWriter(brWVen);
        
        for (Cliente c:listaCliente) {
            gravarArq.printf( c.getNomeCliente() + "%n"
              + c.getEnderecoCliente()+ "%n"
              + c.getFoneCliente() + "%n" );
        }
    
        for (Mercadoria m:listaMercadoria) {
            gravarArq2.printf( m.getNomeItem()+ "%n"
              + m.getQtdItem()+ "%n"
              + m.getPrecoItem() + "%n" );
        }
        
        for (Venda v:listaVenda) {
            
            gravarArq3.printf( v.getNomeCliente().getNomeCliente()+ "%n");
            for(Mercadoria m: v.getListaComprasCliente()){
                    gravarArq3.printf(
               m.getNomeItem()+ "%n" );
            }
            gravarArq3.printf( "*%n" + v.getValorTotal() + "%n" );
        }

        brWCli.close();
        brWMer.close();
        brWVen.close();
        
    }
}    
